package com.lostreseditores.sabersai.presentation.backingBeans;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.primefaces.component.calendar.Calendar;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.RowEditEvent;
import org.primefaces.event.SelectEvent;

import com.lostreseditores.sabersai.exceptions.ZMessManager;
import com.lostreseditores.sabersai.model.Premarcado;
import com.lostreseditores.sabersai.model.dto.PremarcadoDTO;
import com.lostreseditores.sabersai.presentation.businessDelegate.BusinessDelegatorView;
import com.lostreseditores.sabersai.utilities.FacesUtils;


public class PremarcadoView {
    private InputText txtPremarchivot;
    private InputText txtPremcodasigt;
    private InputText txtPremestadon;
    private InputText txtPremtipon;
    private InputText txtCaliidn_Calificacion;
    private InputText txtPremidn;
    private Calendar txtPremfechad;
    private CommandButton btnSave;
    private CommandButton btnModify;
    private CommandButton btnDelete;
    private CommandButton btnClear;
    private List<PremarcadoDTO> data;
    private PremarcadoDTO selectedPremarcado;

    public PremarcadoView() {
        super();
    }

    public void rowEventListener(RowEditEvent e) {
        try {
            PremarcadoDTO premarcadoDTO = (PremarcadoDTO) e.getObject();

            if (txtPremarchivot == null) {
                txtPremarchivot = new InputText();
            }

            txtPremarchivot.setValue(premarcadoDTO.getPremarchivot());

            if (txtPremcodasigt == null) {
                txtPremcodasigt = new InputText();
            }

            txtPremcodasigt.setValue(premarcadoDTO.getPremcodasigt());

            if (txtPremestadon == null) {
                txtPremestadon = new InputText();
            }

            txtPremestadon.setValue(premarcadoDTO.getPremestadon());

            if (txtPremtipon == null) {
                txtPremtipon = new InputText();
            }

            txtPremtipon.setValue(premarcadoDTO.getPremtipon());

            if (txtCaliidn_Calificacion == null) {
                txtCaliidn_Calificacion = new InputText();
            }

            txtCaliidn_Calificacion.setValue(premarcadoDTO.getCaliidn_Calificacion());

            if (txtPremidn == null) {
                txtPremidn = new InputText();
            }

            txtPremidn.setValue(premarcadoDTO.getPremidn());

            if (txtPremfechad == null) {
                txtPremfechad = new Calendar();
            }

            txtPremfechad.setValue(premarcadoDTO.getPremfechad());

            action_modify();
        } catch (Exception ex) {
        }
    }

    public String action_clear() {
        if (txtPremarchivot != null) {
            txtPremarchivot.setValue(null);
            txtPremarchivot.setDisabled(true);
        }

        if (txtPremcodasigt != null) {
            txtPremcodasigt.setValue(null);
            txtPremcodasigt.setDisabled(true);
        }

        if (txtPremestadon != null) {
            txtPremestadon.setValue(null);
            txtPremestadon.setDisabled(true);
        }

        if (txtPremtipon != null) {
            txtPremtipon.setValue(null);
            txtPremtipon.setDisabled(true);
        }

        if (txtCaliidn_Calificacion != null) {
            txtCaliidn_Calificacion.setValue(null);
            txtCaliidn_Calificacion.setDisabled(true);
        }

        if (txtPremfechad != null) {
            txtPremfechad.setValue(null);
            txtPremfechad.setDisabled(true);
        }

        if (txtPremidn != null) {
            txtPremidn.setValue(null);
            txtPremidn.setDisabled(false);
        }

        if (btnSave != null) {
            btnSave.setDisabled(true);
        }

        if (btnDelete != null) {
            btnDelete.setDisabled(true);
        }

        if (btnModify != null) {
            btnModify.setDisabled(true);
        }

        if (btnClear != null) {
            btnClear.setDisabled(false);
        }

        return "";
    }

	public void listener_txtPremfechad(SelectEvent dse) {
		Date inputDate = (Date) txtPremfechad.getValue();
		Date date = (Date) dse.getObject();
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		FacesContext.getCurrentInstance().addMessage(
				"",
				new FacesMessage("Fecha Seleccionada "
						+ dateFormat.format(date)));
	}

    public void listener_txtId() {
        Premarcado entity = null;

        try {
            Integer premidn = new Integer(txtPremidn.getValue().toString());
            entity = BusinessDelegatorView.getPremarcado(premidn);
        } catch (Exception e) {
            // TODO: handle exception
        }

        if (entity == null) {
            txtPremarchivot.setDisabled(false);
            txtPremcodasigt.setDisabled(false);
            txtPremestadon.setDisabled(false);
            txtPremtipon.setDisabled(false);
            txtCaliidn_Calificacion.setDisabled(false);
            txtPremfechad.setDisabled(false);
            txtPremidn.setDisabled(false);
            btnSave.setDisabled(false);
            btnDelete.setDisabled(true);
            btnModify.setDisabled(true);
            btnClear.setDisabled(false);
        } else {
            txtPremarchivot.setValue(entity.getPremarchivot());
            txtPremarchivot.setDisabled(false);
            txtPremcodasigt.setValue(entity.getPremcodasigt());
            txtPremcodasigt.setDisabled(false);
            txtPremestadon.setValue(entity.getPremestadon());
            txtPremestadon.setDisabled(false);
            txtPremfechad.setValue(entity.getPremfechad());
            txtPremfechad.setDisabled(false);
            txtPremtipon.setValue(entity.getPremtipon());
            txtPremtipon.setDisabled(false);
            txtCaliidn_Calificacion.setValue(entity.getCalificacion()
                                                   .getCaliidn());
            txtCaliidn_Calificacion.setDisabled(false);
            txtPremidn.setValue(entity.getPremidn());
            txtPremidn.setDisabled(true);
            btnSave.setDisabled(true);
            btnDelete.setDisabled(false);
            btnModify.setDisabled(false);
            btnClear.setDisabled(false);
        }
    }

    public String action_save() {
        try {
            BusinessDelegatorView.savePremarcado(FacesUtils.checkString(
                    txtPremarchivot), FacesUtils.checkString(txtPremcodasigt),
                FacesUtils.checkInteger(txtPremestadon),
                FacesUtils.checkDate(txtPremfechad),
                FacesUtils.checkInteger(txtPremidn),
                FacesUtils.checkInteger(txtPremtipon),
                FacesUtils.checkInteger(txtCaliidn_Calificacion));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_delete() {
        try {
            BusinessDelegatorView.deletePremarcado(FacesUtils.checkInteger(
                    txtPremidn));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_modify() {
        try {
            BusinessDelegatorView.updatePremarcado(FacesUtils.checkString(
                    txtPremarchivot), FacesUtils.checkString(txtPremcodasigt),
                FacesUtils.checkInteger(txtPremestadon),
                FacesUtils.checkDate(txtPremfechad),
                FacesUtils.checkInteger(txtPremidn),
                FacesUtils.checkInteger(txtPremtipon),
                FacesUtils.checkInteger(txtCaliidn_Calificacion));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
            action_clear();
        } catch (Exception e) {
            data = null;
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String actionDeleteDataTableEditable() {
        try {
            if (txtPremidn == null) {
                txtPremidn = new InputText();
            }

            txtPremidn.setValue(selectedPremarcado.getPremidn());

            BusinessDelegatorView.deletePremarcado(FacesUtils.checkInteger(
                    txtPremidn));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
            action_clear();
            data.remove(selectedPremarcado);
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_modifyWitDTO(String premarchivot, String premcodasigt,
        Integer premestadon, Date premfechad, Integer premidn,
        Integer premtipon, Integer caliidn_Calificacion)
        throws Exception {
        try {
            BusinessDelegatorView.updatePremarcado(premarchivot, premcodasigt,
                premestadon, premfechad, premidn, premtipon,
                caliidn_Calificacion);
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
        } catch (Exception e) {
            //renderManager.getOnDemandRenderer("PremarcadoView").requestRender();
            FacesUtils.addErrorMessage(e.getMessage());
            throw e;
        }

        return "";
    }

    public InputText getTxtPremarchivot() {
        return txtPremarchivot;
    }

    public void setTxtPremarchivot(InputText txtPremarchivot) {
        this.txtPremarchivot = txtPremarchivot;
    }

    public InputText getTxtPremcodasigt() {
        return txtPremcodasigt;
    }

    public void setTxtPremcodasigt(InputText txtPremcodasigt) {
        this.txtPremcodasigt = txtPremcodasigt;
    }

    public InputText getTxtPremestadon() {
        return txtPremestadon;
    }

    public void setTxtPremestadon(InputText txtPremestadon) {
        this.txtPremestadon = txtPremestadon;
    }

    public InputText getTxtPremtipon() {
        return txtPremtipon;
    }

    public void setTxtPremtipon(InputText txtPremtipon) {
        this.txtPremtipon = txtPremtipon;
    }

    public InputText getTxtCaliidn_Calificacion() {
        return txtCaliidn_Calificacion;
    }

    public void setTxtCaliidn_Calificacion(InputText txtCaliidn_Calificacion) {
        this.txtCaliidn_Calificacion = txtCaliidn_Calificacion;
    }

    public Calendar getTxtPremfechad() {
        return txtPremfechad;
    }

    public void setTxtPremfechad(Calendar txtPremfechad) {
        this.txtPremfechad = txtPremfechad;
    }

    public InputText getTxtPremidn() {
        return txtPremidn;
    }

    public void setTxtPremidn(InputText txtPremidn) {
        this.txtPremidn = txtPremidn;
    }

    public List<PremarcadoDTO> getData() {
        try {
            if (data == null) {
                data = BusinessDelegatorView.getDataPremarcado();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return data;
    }

    public void setData(List<PremarcadoDTO> premarcadoDTO) {
        this.data = premarcadoDTO;
    }

    public PremarcadoDTO getSelectedPremarcado() {
        return selectedPremarcado;
    }

    public void setSelectedPremarcado(PremarcadoDTO premarcado) {
        this.selectedPremarcado = premarcado;
    }

    public CommandButton getBtnSave() {
        return btnSave;
    }

    public void setBtnSave(CommandButton btnSave) {
        this.btnSave = btnSave;
    }

    public CommandButton getBtnModify() {
        return btnModify;
    }

    public void setBtnModify(CommandButton btnModify) {
        this.btnModify = btnModify;
    }

    public CommandButton getBtnDelete() {
        return btnDelete;
    }

    public void setBtnDelete(CommandButton btnDelete) {
        this.btnDelete = btnDelete;
    }

    public CommandButton getBtnClear() {
        return btnClear;
    }

    public void setBtnClear(CommandButton btnClear) {
        this.btnClear = btnClear;
    }

    public TimeZone getTimeZone() {
        return java.util.TimeZone.getDefault();
    }
}
